//
//  Person.m
//  LearnOCbase
//
//  Created by China Dragon on 2023/1/15.
//

#import "Person.h"

@implementation Person
-(void)setAge:(int)newAge{// 方法名是setAge:，注意：冒号也是方法名的一部分
    age = newAge;
//    self.age = newAge; //这里会造成死循环[self setAge:newAge]
}

-(int)age{//方法名是age
    return age;
}
//方法名是setAge:newAgeandNo:
- (void)setAge:(int)newAge andNo:(int)newNo{
    age = newAge;
    no = newNo;
}
- (void)setNo:(int)newNo{
    no = newNo;
}
-(int)no{
    return no;
}

//实现构方法
- (id)initWithAge:(int)newage andNo:(int)newno{
    //首先调用父类构造方法
    self = [super init];
    //Objective-c nil, Nil, NULL和NSNull的区别 https://blog.csdn.net/crayondeng/article/details/18954999
    //OC中的nil、Nil、NULL、NSNull https://blog.csdn.net/overstep1024/article/details/115079602
    //nil 是 ObjC 对象的字面空值，对应 id 类型的对象，或者使用 @interface 声明的 ObjC 对象
    //如果self 不为 nil
//    if(self != nil){
//    if(self){//可以简写
    if(self = [super init]){//或者可以简写
//        age = newage;
//        no = newno;
        self.age = newage;// 这里可以使用self调用
        self.no = newno;
    }
   
    return self;
}
//重写父类的description方法，当使用%@打印一个对象的时候会调用此方法
-(NSString *)description{
  NSString *str =  [NSString stringWithFormat:@"age = %i , no = %i ",age, no];
    return  str;
}

@end
